26b.ピポットテ−ブル
ピポットテ−ブルは自動記録で作成でき、特にノウハウ的ものは必要ありません。しかしマクロの 内容を理解していると変更等が容易に出来ます。

26b−1 ピポットテ−ブルの作成
・Excel95とExcel2000ではマクロの内容が異なります。(95で作成→2000で実行OK、 97/2000で作成→95で実行不可)
・別シ−トへピポットテ−ブルを作成する場合は「TableDestination:=""」にする。

'[1] Excel2000
Sub Macro1()
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R27C4").CreatePivotTable TableDestination:=Range("G2"), _
        TableName:="ピボットテーブル1"
    ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量")
        .Orientation = xlDataField
        .Position = 1
    End With
    Application.CommandBars("PivotTable").Visible = False
End Sub

'[2] Excel95
Sub Record1()
    Range("A2").Select
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R27C4", TableDestination:=Range("G2"), TableName:= _
        "ピボットテーブル1"
    ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="日付", _
        ColumnFields:="製品"
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量").Orientation _
        = xlDataField
End Sub

26b−2 ピポットグラフをテ−ブルと同一シ−トへ表示
Excel2000ではピポットグラフを表示できるようになりました。通常ピホットテ−ブル上で 右クリックでショウトカットメニュ−の「ピポットグラフ」をクリックすればグラフは 「Graphシ−ト」に作成される。下記マクロ(作成)は表示場所をピホットテ−ブルと同じ場所 に表示し、マクロ(消去)でグラフを消去します。



Sub 作成()
    Charts.Add
    ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("g3")
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
    Range("F1").Select
      
   ActiveSheet.ChartObjects.Select
    chmane = Selection.Name
        
    ActiveSheet.ChartObjects(chmane).Activate
    ActiveChart.ChartArea.Select
    ActiveSheet.Shapes(chmane).ScaleHeight 1.44, msoFalse, msoScaleFromTopLeft
End Sub

'消去
Sub 消去()
     shc = ActiveSheet.ChartObjects.Count
    If shc = 1 Then
        ActiveSheet.ChartObjects.Select
        Selection.Delete
    Else
         If shc > 1 Then
            MsgBox "図形が" & shc & "個あります手で消去してください"
         End If
    End If
End Sub

26b−3 ピポットグラフの種類変更
ピポットグラフは下記のようにグラフの種類を指定するだけで 容易に変更できます。(下記例はシ−トにグラフが1個が前提)

Sub Macro2()
'
   ActiveSheet.ChartObjects.Select
'
    ActiveChart.ChartType = xl3DPie
    ActiveWindow.Visible = False
    Windows("ピポット.xls").Activate
    Range("G1").Select
End Sub
Sub Macro3()
'
ActiveSheet.ChartObjects.Select
'
    ActiveChart.ChartType = xlAreaStacked
    ActiveWindow.Visible = False
    Windows("ピポット.xls").Activate
    Range("G1").Select
End Sub

26b−4 フィ−ドの入れ替え
行フィ−ルドと列フィ−ルドの入れ替えはピポットテ−ブル上で、 そのアイテムをドラッグするだけで簡単にできますが、よく入れ替え て見る場合は下記例のようにアイテム名を変数に入れればマクロで 一瞬に入れ替えてみることが出来ます。

Dim aa As String
Dim bb As String

Sub Macro1a()
    Range("G1:K7").Select
    Selection.ClearContents
        aa = "日付"
        bb = "製品"
    Macro1c
End Sub

Sub Macro1b()
    Range("G1:K7").Select
    Selection.ClearContents
        bb = "日付"
        aa = "製品"
    Macro1c
End Sub

Sub Macro1c()
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R27C4").CreatePivotTable TableDestination:=Range("G2"), _
        TableName:="ピボットテーブル1"
    ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields(aa)
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields(bb)
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量")
        .Orientation = xlDataField
        .Position = 1
    End With
    Application.CommandBars("PivotTable").Visible = False
     Range("F1").Select
End Sub

26b− 5 デ−タ範囲の指定
ピポットテ−ブル化するデ−タ範囲は"SourceData:="で指定できるが、 Excel95ではRangeオブジェクトで指定したが、97/2000ではセルの参照範囲 を文字列として指定します。


Dim Myrang As String
Sub ki153a()
    Myrang = "A1:D30"
    ki153
End Sub
Sub ki153b()
    Myrang = "A1:D20"
    ki153
End Sub
Sub ki153c()
    Myrang = "A1:D10"
    ki153
End Sub

Sub ki153()
Sheets("Sheet1").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        Myrang).CreatePivotTable TableDestination:=Range("G2"), _
        TableName:="ピボットテーブル1"
            
    ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量")
        .Orientation = xlDataField
        .Position = 1
    End With
    Application.CommandBars("PivotTable").Visible = False
End Sub

目次へ戻る

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル